package leetcode_day._2021._202109._2130;

/**
 * @author yzh
 * @version 1.0
 * @date 2021/9/30 8:52
 * 矩形面积
 * 给你 二维 平面上两个 由直线构成的 矩形，请你计算并返回两个矩形覆盖的总面积。
 * 每个矩形由其 左下 顶点和 右上 顶点坐标表示：
 *  第一个矩形由其左下顶点 (ax1, ay1) 和右上顶点 (ax2, ay2) 定义。
 *  第二个矩形由其左下顶点 (bx1, by1) 和右上顶点 (bx2, by2) 定义。
 * 算法：数学
 * 判断两个矩形有没有交集
 * ax1 =< x1 <= ax2, bx1 =< x2 <= bx2
 * ay1 =< y1 <= ay2, by1 =< y2 <= by2
 */
public class _30_223 {

    public int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {
        int sum = (ax2 - ax1) * (ay2 - ay1) + (bx2 - bx1) * (by2 - by1);
        int x = Math.min(ax2, bx2) - Math.max(ax1, bx1);
        int y = Math.min(ay2, by2) - Math.max(ay1, by1);
        return (x > 0 && y > 0) ? sum - x * y : sum;
    }

}
